<?php


namespace App\Libraries;


class AES
{
    /**
     * var string $method 密码学加解密方法，可通过openssl_get_cipher_methods()获得
     * 参考：https://www.php.net/manual/zh/function.openssl-get-cipher-methods.php
     */
    protected static $method;

    /**
     * var string $key 加解密的密钥
     */
    protected static $key;

    /**
     * var string $iv 初始化向量非NULL
     */
    protected static $iv;

    /**
     * var string $options 数据加密过程记录下标和按位
     */
    protected static $options;

    /**
     * @title 初始配置
     */
    public static function _init($key = '165c3bfef79f4c0ebd6ca6ab49ba42c1', $method = 'AES-128-ECB', $iv = '', $options = 0)
    {
        self::$key = $key;
        self::$method = $method;
        self::$iv = $iv;
        self::$options = $options;
    }

    /**
     * @title 加密方法对数据进行加密并返回加密后的数据
     * @param string $data 要加密的数据
     * @return string
     */
    public static function OpensslEncrypt($data)
    {
        return openssl_encrypt($data, self::$method, self::$key, self::$options, self::$iv);
    }

    /**
     * @title 解密方法对数据进行解密并且返回解密后的数据
     * @param string $data 要解密的数据
     * @return string
     */
    public static function OpensslDecrypt($data)
    {
        return openssl_decrypt($data, self::$method, self::$key, self::$options, self::$iv);
    }
}